System and method for enabling offline use of email through a browser interface

ABSTRACT

A system and method provide online and offline collaboration suite functionality. A local web server application running on the user&#39;s computer serves an email client on the user&#39;s computer, where the email client executes within a browser. Because the local web server application executes on the user&#39;s computer, it is able to serve the email client regardless of whether the user&#39;s computer is online or offline. The local web server application also communicates with a remote web server, where the remote web server has the capability to receive incoming messages from, and send outbound messages to, a Mail Transfer Agent. When the user&#39;s computer is online, the remote web server and local web server application periodically (although not necessarily at regular intervals) synchronize their user mailbox information. The local web server application and remote web server application store, search, and index user mailbox information in the same manner.

RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application No. 60/606,862, filed on Sep. 2, 2004, and titled “Email System and Methods for Viewing, Searching, Tracking, and Indexing Email,” the contents of which are incorporated by reference as if fully disclosed herein.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to email applications and more specifically to a system and method for enabling offline use of a client email application executing within a browser.

2. Description of the Background Art

Accessing one's email account through a browser interface is known in the art. In such cases, a user uses a browser to go to a website associated with the user's email account. For instance, in Yahoo Mail, a user accesses his email by logging into Yahoo's website.

In known systems, email accounts accessed through a browser are available only when the user's computer is online. There is no ability to access such systems through a browser interface when the user's computer is offline.

It is desirable for one to be able to review, search, and compose email messages when the one's computer is offline, such as when one is on an airplane. Currently, the only way to do this is to use a separate email client application (other than the browser interface) to view one's email. Microsoft Outlook and Outlook Express are examples of such an application. One disadvantage of this is that a user has a separate email interface for when the user is offline and online. Consequently, when a user is offline, it is desirable to enable the user to review and search email messages received prior to the user going offline and to compose messages that will be saved and automatically sent when the user is back online, where such functionality is provided through the same browser interface that the user uses when he is online.

SUMMARY OF THE INVENTION

The present invention provides a system and method for providing online and offline email functionality (and/or other collaboration suite functionality). A local web server application running on the user's computer serves an email client on the user's computer, where the email client executes within a browser. The browser sends requests to the local web server application for user mailbox information, and the local web server application responds to such requests. Because the local web server application executes on the user's computer, it is able to serve the email client regardless of whether the user's computer is online or offline.

The local web server application also communicates with a remote web server, where the remote web server has the capability to receive incoming messages from a Mail Transfer Agent and to send outbound message to a Mail Transfer Agent. When the user's computer is online, the remote web server and local web server application periodically (although not necessarily at regular intervals) synchronize their user mailbox information. The local web server application and remote web server application store, search, and index user mailbox information in the same manner.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a block diagram of an email system according to one embodiment of the present invention.

FIG. 2 illustrates a method for providing online and offline use of email through a browser interface.

FIG. 3 illustrates a method for sending an outbound email message that is composed when the user is offline.

FIG. 4 illustrates a method for processing inbound email messages that are received when the user is offline.

FIGS. 5 a-5 b illustrate a method for synchronizing user mailbox information stored by the local web server application and the remote web server.

FIG. 6 a is a block diagram of an example remote web server application that provides email/collaboration functionality.

FIG. 6 b is a block diagram of an example local web server application that provides email/collaboration functionality.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

FIG. 1 illustrates a block diagram of an email system 100 according to one embodiment of the present invention. The system includes a remote web server 160 and a local web server application 130, where the local web server application runs on a user's computer. The remote web server 160 and local web server application 130 execute code that provides email server functionality. Such code may also provide additional functionality associated with collaboration applications, such as a calendar and “contacts” directory (i.e., an electronic address book). Both the local web server application 130 and the remote web server 160 store user mailbox information and process user mailbox information in the same way.

The local web server application 130 serves an email client application 110 that runs within browser 120 on the user's computer 170 (i.e., with email client code 110, the browser 120 becomes the email client). The local web server application 130 responds to requests from the browser 120 to retrieve or process user mailbox information.

The remote web server 160 communicates with a Mail Transfer Agent (MTA) 180 to receive inbound email messages for the user and to send the user's outbound message. The local web server application 160 and remote web server 160 include synchronization modules 150, 140, respectively, that synchronizes the user mailbox information stored by each.

During synchronization, the remote web server 160 provides the local web server application 130 with changes to user mailbox information made on the remote web server 160. Examples of changes to user mailbox information that may occur on the remote web server include the receipt of new, incoming email messages in the user's mailbox, or appointments made in the user's calendar by authorized third parties. Also during synchronization, the local web server application 130 provides the remote web server 160 with changes to user mailbox information made on the user computer 170. Examples of changes to user mailbox information that may occur on the user computer 170 include a user composing and sending a message, or a user adding a person to his contacts.

As indicated above, the email system 100 can provide more than just email functionality. It can provide other collaboration application functionality, such as calendaring functionality and a contacts directory. The methods described herein with respect to storing, processing, retrieving, and synchronizing email data can also apply to other user mailbox content, such as calendar appointments and contact files.

FIG. 2 illustrate a method for using the local web server application 130 and the remote web server 160 to provide both online and offline email functionality (and/or other collaboration application functionality) to the user. The method comprises the following:

-   -   1. Running a client email application 110 in a browser 120 on         the user's computer (step 210). In one embodiment, the email         client application 110 is in the form of JavaScript downloaded         into a user's browser that makes SOAP (Simple Object Access         Protocol) calls to the local web server application 130. The         email client 110 is configured to send user-mailbox-related         requests to the local web server application 130.     -   2. Using the local web server application 130 running on the         user's computer 170 to store and process user mailbox         information on the user's computer 170, to respond to requests         from the client application 110 for user mailbox information,         and to receive changes to user mailbox information made by the         user via the client application 110 (step 220). The local web         server application 130 can search, store, and index user mailbox         information in the same manner as the remote web server 160.         Consequently, the local web server application 130 enables a         user to view, search, and compose messages in the same manner as         if the client application 110 were communicating with the remote         web server 160. The local web server application 130 stores use         mailbox information on the hard drive on the user's computer         170. Changes made to the user's mailbox information on the         user's computer 170 are periodically sent to the remote web         server 160 and vice versa.     -   3. Using the remote web server 160 to remotely store and process         user mailbox information, to receive incoming email messages for         the user from a MTA 180, and to send outbound email messages to         a MTA 180 that are composed by the user and sent to the remote         web server 160 by the local web server application 130 (step         230). As indicated above, the local web server application 130         and remote web server 160 synchronize user mailbox information         periodically when the user's computer is online (step 230).

Because the local web server application 130 responds to the email client 110 in the browser 120, the user can access, view, and search his mailbox information through the browser 120 even when he is offline. The messages he will be able to view, search, and otherwise manipulate are those that were received the last time the user was online. Messages composed when the user is offline are automatically sent to the designated addresses (via the remote web server 160) when the user is back online. The user will be able to retrieve and search messages faster by the fact that the local web server application 130 responds to requests from the browser 120 as opposed to the remote web server 160.

FIG. 3 illustrates how a composed message is handled by the email system 100 according to one embodiment of the present invention. A user composes a message (step 310), and the email client 110 sends it to the local web server application 130 via the browser 120 (step 320). The local web server application 130 stores the message on the user's computer 170 and updates the user's “Outbox” folder on the user's computer 170 accordingly (step 330). When the user's computer 170 is online and the remote web server 160 and local web server application 130 are synchronizing data, the local web server application 130 sends the composed message to the remote web server 160 (step 340). The remote web server 160 then sends the composed message out to the applicable MTA 180, which forwards the message to the appropriate destination (step 350). The remote web server 160 updates the user's “Sent Items” folder on the remote web server to include the sent message (step 350). The local web server application 130 updates the “Sent Items” folder on the user's computer 170 during the next data synchronization with the remote web server 160 (step 360).

FIG. 4 illustrates how a received inbound message for the user is handled by the email system 100 according to one embodiment of the present invention. The remote web server 160 receives an incoming message from the MTA 180 (step 410). The remote web server 160 then stores the message and updates the user's “Inbox” on the remote web server 160 accordingly (step 420). When the user's computer 170 is online and the remote web server 160 and local web server application 130 are synchronizing data, the remote web server 160 sends the incoming message to the local web server application 130 (step 430). After receiving the message, the local web server application 130 stores the message on the user's computer and updates the user's “Inbox” folder on such computer 170 to include the message (step 440). The local web server application 130 sends the updated Inbox to the user when the user opens the client application 110.

FIGS. 5 a-b illustrate an example of the way in which the synchronization modules 140, 150 synchronize user mailbox information on the user's computer 170 and the remote web server 160. The method described with respect to FIG. 5 is just one method and other data synchronization methods may be employed. When the user's computer 170 is online, the synchronization module 150 on the local web server application 170 will periodically (but not necessarily at regular intervals) send a request to synchronize data (“a data sync request”) to the remote web server 160 (step 510). In one embodiment, the local web server application will send a data sync request when one of the following scenarios occurs: (1) the remote web server 160 informs the local web server application 130 that a change to the user's mailbox has occurred (such as when the user receives a message); (2) a certain amount of time has passed; or (3) a certain amount of time has passed after the user has made a change to the user mailbox information stored by the local web server application 130.

If this is the first time the local web server application and remote web server are performing synchronization, the synchronization module 150 on the remote web server 160 sends the local web server application 130 all of the applicable user's mailbox information, as well as a “sync token” (step 520). In one embodiment, a sync token is a unique string. In a further embodiment, the sync token is a unique, numeric string associated with the last piece of data to be sent to the local web server application 130. For each content or metadata change to the user's mailbox received at the remote web server 160 after such last piece of data, the remote web server 160 increments the numeric string by one and associates such new numeric string with such content or metadata change (where each content or metadata changes is associated with a string that is one greater than the string associated with the previous content or metadata change).

If this is not the first time the local web server application 130 and remote web server 160 are performing a synchronization, the data sync request by the synchronization module 140 on the user's computer 170 includes the last sync token provided to the local web server application 130 by the remote web server 160 (step 530). The synchronization module 150 on the remote web sever 160 then provides the local web server application 130 with the metadata changes and content changes that have occurred since the last synchronization, where the remote web server 160 uses the sync token to identify such changes (step 540). The sync response also includes a new sync token (step 540).

The local web server application 130 then determines if there are any conflicts between the data provided by the remote web server 160 and changes made the user on the user's computer 170 since the last synchronization (step 550). The local web server application 130 may ask the user to resolve conflicts or it may follow rules for resolving the conflict itself (step 560).

After any conflicts have been resolved, the synchronization module 140 on the local web server application 130 sends the remote web server 160 mailbox changes made by the user on the user's computer 170 (and stored by the local web server application 130) since the last data synchronization (step 570). Synchronization module 140 also sends the remote web server 160 a sync request with the latest sync token (step 580). In response to receiving such sync token, the remote web server 160 provides the local web server application 130 with changes made to the user's mailbox on the remote web server since such sync token was created (step 585). The remote web server 160 also provides the local web server application 130 with a new sync token (if changes have occurred since step 540). The local web server application 130 then determines if a conflict exists (step 590). If one exists, the conflict is resolved through either rules or user intervention, as applicable (595), and steps 570-590 are repeated. Otherwise, the data synchronization ends (step 598).

FIG. 6 a illustrates an example of email server software running on the remote server 160. The software on the remote web server 160 can be thought of as divided into various functional modules. These modules include a Mailbox Interface 1670, a Query Parser 1630, an Indexer 1635, a Database Management Module 1640, a Message Store Interface 1645, a MTA Interface 1620, an Email Client Interface 1615, and a Synchronization Module 1680. In one embodiment these modules are coded in Java. Those skilled in the art will appreciate that an email application will include additional, well-known functionality not represented by the above modules (such as functionality related to security, user log in, global address lists, etc.). Moreover, FIGS. 6 a and 6 b are examples of one way to implement the local web server application 130 and the email server software running on the remote web server 160, and such local web server application and email server software may be implemented in other ways.

The Database Management Module 1640 is a set of routines for managing, storing and retrieving information in a relational Database 1655 (e.g., MySQL). The Database 1655 includes information about each provisioned email user's mailbox that is used to generate a view of the user's mailbox. It stores a listing of the contents of a user's mailbox (with a reference to the actual storage location of the messages in the Message Store 1660), and it includes mutable information about such content, such as which folder each message resides (inbox, sent items, user-created folders, etc.) or which messages have been read.

The Message Store Interface 1645 is software for storing and retrieving email messages in a Message Store 1660. The Message Store (often referred to as the “BLOB Store” in the industry) stores the actual email messages, including any attachments embedded within email messages. If the remote web server 160 provides collaboration functionality, then the message store also stores content related to other mailbox items, such as calendar appointments and contacts. Techniques for storing and retrieving email messages, as well as storing and retrieving user-specific mailbox information to generate a view of a user's mailbox, are well known in the art.

The Indexer 1635 indexes email messages based on the content of the messages and on the metadata in the headers of the email messages. The Indexer 1635 also may index email attachments based on content and metadata. If the remote web server 160 provides collaboration application functionality other than just email, than the Indexer 1635 may also index other mailbox items, such as calendar appointments and contact files. The Indexer 1635 stores the indexes in Index 1650. In an alternate embodiment, the functionality of the Indexer 335 and the Database Management Module 1640 are combined, and the indexes and user mailbox information are stored in one database.

The Email Client Interface 1615 is the interface through which remote web server communicates with browsers when there is no local web server application 130 on the user computers (in such scenario, the methods described with respect to FIGS. 2-5 are not used, and there is no offline email functionality). In one embodiment, when a user logs into the web server, the Email Client Interface 1615 send the user's browser an initial web page that includes JavaScript code. The JavaScript code is downloaded into a user's browser to become the email client application 110. When an email client application communicates directly with the remote web server 170, Email Client Interface 1615 processes inbound and outbound communications with such email client. In one embodiment, the Email Client Interface 1615 communicates with Email Clients via SOAP.

The MTA Interface 1620 receives incoming messages for provisioned users (i.e., users who have mailboxes with the email application on the remote web server 160) from a Mail Transfer Agent (MTA) (not shown). In one embodiment the MTA Interface 1620 uses the Local Mail Transfer Protocol (LMTP) to communicate with an MTA that uses the Simple Mail Transfer Protocol (SMTP). The MTA forwards incoming email message to the Mailbox Interface 1670.

The Mailbox Interface 1670 processes incoming email messages, including parsing email message headers for metadata. The Mailbox Interface 1670 sends the metadata to the Indexer 1635 and Database Management Module 1640, as applicable. The Mailbox Interface 1670 includes a Synchronization Module 1680 which performs the synchronization described with respect to FIG. 5.

The Mailbox Interface 1670 also includes a Query Parser 1630, which parses all requests that involve searching the Index 1650 or the Database 1655. In response to receiving such requests, the Query Parser 1630 creates appropriate query trees and sends them to either the Indexer 1635 or the Database Management Module 1640, depending on whether or not the Index 1650 or the Database 1655 has the appropriate information. The Query Parser 1630 receives, and if necessary, assembles the responses to the query trees from the Indexer 1635 and Database Management Module 1640 and forwards it to the appropriate interface for transmittal to the requesting systems.

FIG. 6 b illustrates an example of the local web server application 130. Like the software on the remote server, the local web server application includes a Mailbox Interface 1370, a Query Parser 1330, an Indexer 1335, a Database Management Module 1340, a Message Store Interface 1345, and a Synchronization Module 1380. These modules process user mailbox information the same as the corresponding modules on the remote web server 160. Thus, the user experience with his mailbox is the same regardless of whether the email client communicates with the local web server application 130 or the remote web server 160. The local web server application 130 uses the file system on the hard drive of the user's computer 170 to store the index and the messages associated with the user's mailbox. Consequently, the Indexer 1335 and Message Store Interface 1345 respectively store the index and mailbox content in the file system of the user's computer 170. The Database Management Module 1340 uses an embedded database on the user's computer 170 to store the same type of user mailbox information that the Database Management Module 1640 on the remote web server 160 stores in the Database 1655.

Like the remote web server 160, local web server application 130 also includes an Email Client Interface 1315. Email Client Interface 1315 processes inbound and outbound communications with the email client application 110 in the web browser 120. In one embodiment, the Email Client Interface 1315 communicates with the email client application 110 via SOAP. Also, in one embodiment, the first web page provided to the browser 120 by the Email Client Interface includes JavaScript code. The JavaScript code is downloaded into a user's browser to become the email client application 110.

As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Accordingly, the disclosure of the present invention is intended to be illustrative and not limiting of the invention. 

1. A method for providing online and offline email services to a user, the method comprising: running a client email application in a browser on a user's computer; using a local web server application running on the user's computer to store user mailbox information on the user's computer, to respond to requests from the client email application for user mailbox information, and to receive changes to user mailbox information made by the user via the client email application; wherein the local web server application is able to respond to the client email application regardless of whether the user's computer is online or offline; and using a remote web server to remotely store user mailbox information, to receive incoming email messages for the user and to send outbound email messages that are composed by the user and sent to the remote web server by the local web server application, wherein the local web server application and remote web server synchronize user mailbox information periodically when the user's computer is online and wherein the local web server application stores, searches, and indexes user mailbox information in the same manner as the remote web server.
 2. The method of claim 1, wherein the client email application is a collaboration application and wherein the local web server application and the remote web server provide collaboration functionality to the user, including a calendar and a contacts directory for the user.
 3. The method of claim 2, wherein the remote web server receives calendaring changes made by authorized third parties to the calendar, updates the user mailbox information stored on the remote web server to reflect such changes, and provides such changes to the local web server application during synchronization, where, in response to receiving such changes, the local web server application updates the user mailbox information stored on the user's computer to reflect such changes.
 4. The method of claim 2, wherein the local web server application receives calendaring changes made by the user to the calendar, updates the user mailbox information stored on the user's computer accordingly, and provides such changes to the remote web server during synchronization, where, in response to receiving such changes, the remote web server updates the user mailbox information stored on the remote web server to reflect such changes.
 5. The method of claim 2, wherein the remote web server receives changes made by authorized third parties to the contacts directory, updates the user mailbox information stored on the remote web server to reflect such changes, and provides such changes to the local web server application during synchronization, where, in response to receiving such changes, the local web server application updates the user mailbox information stored on the user's computer to reflect such changes.
 6. The method of claim 2 wherein the local web server application receives changes made by the user to the contacts directory, updates the user mailbox information stored on the user's computer to reflect such changes, and provides such changes to the remote web server during synchronization, where, in response to receiving such changes, the remote web server updates the user mailbox information stored on the remote web server to reflect such changes.
 7. The methods of claim 5 wherein the local web server application receives changes made by the user to the contacts directory, updates the user mailbox information stored on the user's computer to reflect such changes, and provides such changes to the remote web server during synchronization, where, in response to receiving such changes, the remote web server updates the user mailbox information stored on the remote web server to reflect such changes.
 8. A computer-implemented system for providing offline and online email functionality to a user, the system comprising: a client application that executes within a browser on a user's computer; a local web server application that communicates with the client application via the browser and that stores user mailbox information on the user's computer, responds to requests from the client application for user mailbox information, and receives changes to user mailbox information made by the user via the client application; wherein the local web server application is able to respond to the client application regardless of whether the user's computer is online or offline; a remote web server that remotely stores user mail box information, receives incoming email messages for the user and sends outbound email messages from the user, wherein such outbound email messages are sent to the remote web server by the local web server application and wherein the local web server application and remote web server synchronize user mailbox information periodically when the user's computer is online.
 9. A computer-implemented collaboration system for providing online and offline collaboration functionality comprising: a client collaboration application that executes within a browser on a user's computer; a local web server application that executes on the user's computer, that is capable of communicating with the client collaboration application via the browser, and that provides collaboration functionality to the user by storing, retrieving, and processing user mailbox information on the user's computer; a remote web server that also stores, retrieves and processes the user's mailbox information; wherein: the remote web server and the local web server application communicate via a network and, when the user's computer is on the network, the local web server application and the remote web server periodically synchronize the user mailbox information; and the local web server application can communicate with the client collaboration application regardless of whether the user's computer is on the network or off the network, enabling the user to have collaboration functionality offline.
 10. The computer-implemented collaboration system of claim 9, wherein the client collaboration application appears the same to the user regardless of whether the browser in which the client collaboration application executes is in communication with the local web server application or the remote web server.
 11. A computer-implemented collaboration system comprising: a client collaboration application that executes within a browser on a user's computer; a local web server application that executes on the user's computer and that communicates with the client collaboration application to provide collaboration application functionality to the user by storing and processing user mailbox information on the user's computer; and a remote web server that also stores and processes the user mailbox information, where the remote web server communicates with the local web server application via a network and, when the user's computer is on the network, the local web server application and remote web server synchronize the user mailbox information; wherein the local web server application processes the user mailbox information in the same way as the remote web server and wherein the local web server application communicates with the browser regardless of whether or not the user's computer is on the network.
 12. (canceled)
 13. (canceled)
 14. A method for providing online and offline collaboration suite services to a user, the method comprising: running a client collaboration suite application in a browser on a user's computer; and using a local web server application running on the user's computer to store user mailbox information on the user's computer, to respond to requests from the client collaboration suite application for user mailbox information, and to receive changes to user mailbox information made by the user via the client collaboration suite application; wherein the local web server application is able to respond to the client collaboration suite application regardless of whether the user's computer is online or offline, and wherein the local web server synchronizes user mailbox data with a remote server when the user's computer is online, and upon the occurrence of a pre-specified event.
 15. The method of claim 14, wherein the pre-specified is one of a group comprised of: (1) a certain amount of time passing since a previous synchronization; (2) the remote web server indicating to the local web server application that a change has occurred on the remote web server; and (3) a certain amount of time passing since the user made a change to the user mailbox information.
 16. The method of claim 14, further comprising: passing a sync token between the remote web server and the local web server application.
 17. The method of claim 16, wherein the sync token is modified by the remote web server when there is a change to the user mailbox information stored on the remote web server.
 18. The method of claim 16, wherein the sync token is modified by the local web sewer application when there is a change to the user mailbox information stored on the user's computer. 